      ...
      # template.spec
      initContainers:
      - name: init-mysql
        image: mysql:5.7
        command:
        - bash
        - "-c"
        - |
          set -ex
          #  Pod ţ server-id
          [[ `hostname` =~ -([0-9]+)$ ]] || exit 1
          ordinal=${BASH_REMATCH[1]}
          echo [mysqld] > /mnt/conf.d/server-id.cnf
          #  server-id=0 ⺬壬Ǹ ID һ 100 ܿ
          echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf
          #  Pod  0˵ Master ڵ㣬 ConfigMap  Master ļ /mnt/conf.d/ Ŀ¼
          # 򣬿 Slave ļ
          if [[ $ordinal -eq 0 ]]; then
            cp /mnt/config-map/master.cnf /mnt/conf.d/
          else
            cp /mnt/config-map/slave.cnf /mnt/conf.d/
          fi
        volumeMounts:
        - name: conf
          mountPath: /mnt/conf.d
        - name: config-map
          mountPath: /mnt/config-map





      ...
      # template.spec.containers
      - name: xtrabackup
        image: gcr.io/google-samples/xtrabackup:1.0
        ports:
        - name: xtrabackup
          containerPort: 3307
        command:
        - bash
        - "-c"
        - |
          set -ex
          cd /var/lib/mysql
          
          # ӱϢļȡ MASTER_LOG_FILEM  MASTER_LOG_POS ֶεֵƴװȺʼ SQL
          if [[ -f xtrabackup_slave_info ]]; then
            #  xtrabackup_slave_info ļڣ˵һ Slave ڵ㡣£XtraBackup ڱݵʱ򣬾ѾļԶ "CHANGE MASTER TO" SQL 䡣ԣֻҪļΪ change_master_to.sql.inֱʹü
            mv xtrabackup_slave_info change_master_to.sql.in
            # ԣҲò xtrabackup_binlog_info 
            rm -f xtrabackup_binlog_info
          elif [[ -f xtrabackup_binlog_info ]]; then
            # ֻ xtrabackup_binlog_inf ļ˵ Master ڵ㣬ǾҪϢļȡֶεֵ
            [[ `cat xtrabackup_binlog_info` =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1
            rm xtrabackup_binlog_info
            # ֶεֵƴװ SQLд change_master_to.sql.in ļ
            echo "CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\
                  MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.in
          fi
          
          #  change_master_to.sql.inζҪȺʼ
          if [[ -f change_master_to.sql.in ]]; then
            # һҪȵ MySQL ֮ܽһ MySQL Ĳ
            echo "Waiting for mysqld to be ready (accepting connections)"
            until mysql -h 127.0.0.1 -e "SELECT 1"; do sleep 1; done
            
            echo "Initializing replication from clone position"
            # ļ change_master_to.sql.in ĸֹ֣ Container ʱΪҵ change_master_to.sql.inӶظִһʼ
            mv change_master_to.sql.in change_master_to.sql.orig
            # ʹ change_master_to.sql.orig ݣҲǾǰƴװ SQLһĳʼ Slave  SQL 
            mysql -h 127.0.0.1 <<EOF
          $(<change_master_to.sql.orig),
            MASTER_HOST='mysql-0.mysql',
            MASTER_USER='root',
            MASTER_PASSWORD='',
            MASTER_CONNECT_RETRY=10;
          START SLAVE;
          EOF
          fi
          
          # ʹ ncat  3307 ˿ڡǣյʱֱִ "xtrabackup --backup"  MySQL ݲ͸
          exec ncat --listen --keep-open --send-only --max-conns=1 3307 -c \
            "xtrabackup --backup --slave-info --stream=xbstream --host=127.0.0.1 --user=root"
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
          subPath: mysql
        - name: conf
          mountPath: /etc/mysql/conf.d






